home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / gedit-2 / plugins / snippets / Importer.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.7 KB  |  93 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import tempfile
  6. import sys
  7. import shutil
  8. from snippets.Library import *
  9.  
  10. class Importer:
  11.     
  12.     def __init__(self, filename):
  13.         self.filename = filename
  14.  
  15.     
  16.     def import_destination(self, filename):
  17.         userdir = Library().userdir
  18.         filename = os.path.basename(filename)
  19.         (root, ext) = os.path.splitext(filename)
  20.         filename = os.path.join(userdir, root + ext)
  21.         i = 1
  22.         while os.path.exists(filename):
  23.             filename = os.path.join(userdir, root + '_' + str(i) + ext)
  24.             i += 1
  25.         return filename
  26.  
  27.     
  28.     def import_file(self, filename):
  29.         if not os.path.exists(filename):
  30.             return _('File `%s` does not exist') % filename
  31.         if not os.path.isfile(filename):
  32.             return _('File `%s` is not a valid snippets file') % filename
  33.         dest = self.import_destination(filename)
  34.         shutil.copy(filename, dest)
  35.         if not Library().add_user_library(dest):
  36.             return _('Imported file `%s` is not a valid snippets file') % os.path.basename(dest)
  37.  
  38.     
  39.     def import_xml(self):
  40.         return self.import_file(self.filename)
  41.  
  42.     
  43.     def import_archive(self, cmd):
  44.         dirname = tempfile.mkdtemp()
  45.         status = os.system('cd %s; %s "%s"' % (dirname, cmd, self.filename))
  46.         if status != 0:
  47.             return _('The archive `%s` could not be extracted' % self.filename)
  48.         errors = []
  49.         for f in os.listdir(dirname):
  50.             f = os.path.join(dirname, f)
  51.             if os.path.isfile(f):
  52.                 if self.import_file(f):
  53.                     errors.append(os.path.basename(f))
  54.                 
  55.             self.import_file(f)
  56.             sys.stderr.write('Skipping %s, not a valid snippets file' % os.path.basename(f))
  57.         
  58.         shutil.rmtree(dirname)
  59.         if len(errors) > 0:
  60.             return _('The following files could not be imported: %s') % ', '.join(errors)
  61.  
  62.     
  63.     def import_targz(self):
  64.         self.import_archive('tar -x --gzip -f')
  65.  
  66.     
  67.     def import_tarbz2(self):
  68.         self.import_archive('tar -x --bzip2 -f')
  69.  
  70.     
  71.     def import_tar(self):
  72.         self.import_archive('tar -xf')
  73.  
  74.     
  75.     def run(self):
  76.         if not os.path.exists(self.filename):
  77.             return _('File `%s` does not exist') % self.filename
  78.         if not os.path.isfile(self.filename):
  79.             return _('File `%s` is not a valid snippets archive') % self.filename
  80.         (root, ext) = os.path.splitext(self.filename)
  81.         actions = {
  82.             '.tar.gz': self.import_targz,
  83.             '.tar.bz2': self.import_tarbz2,
  84.             '.xml': self.import_xml,
  85.             '.tar': self.import_tar }
  86.         for k, v in actions.items():
  87.             if self.filename.endswith(k):
  88.                 return v()
  89.         
  90.         return _('File `%s` is not a valid snippets archive') % self.filename
  91.  
  92.  
  93.